home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / comms / other / ascan / sources / ascan.h < prev    next >
C/C++ Source or Header  |  1999-06-14  |  4KB  |  149 lines

  1.  
  2. #include <proto/socket.h>
  3. #include <proto/exec.h>
  4. #include <proto/dos.h>
  5. #include <exec/memory.h>
  6. #include <sys/socket.h>
  7. #include <netdb.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <stdlib.h>
  11. #include <dos.h>
  12. #include <signal.h>
  13.  
  14. /***************************************************************************/
  15.  
  16. #define MAXCHILDS             128 /*max number of ascan process that can be run*/
  17. #define MAX_SOCKS_PER_TASK    256 /*max socket per ascan proc*/
  18. #define LIMITED_SOCKETS        64  /*limited socks per cycle*/
  19.  
  20. /***************************************************************************/
  21. /* ascan is NOT pure, put it is easy to make it pure, just put here
  22.    DOSBase and Socket and ...*/
  23. struct global
  24. {
  25.     struct Process    *childs[MAXCHILDS];
  26.     ULONG             flags;
  27.     int             nchild;
  28.     int                gt;
  29.     int                ppt;
  30.     int                from;
  31.     int                to;
  32. };
  33.  
  34. /*the startup messages each ascan proc gets*/
  35. struct childMsg
  36. {
  37.     struct Message    link;
  38.     UBYTE             name[35];
  39.     struct global    *g;
  40.     ULONG              tnum;
  41.     u_long             host;
  42.     int             from;
  43.     int             to;
  44.     ULONG             res;
  45.     ULONG             code;
  46.     BPTR            out;
  47. };
  48.  
  49. #define FLG_VERBOSE            0x00000001
  50. #define FLG_LIMITED            0x00000002
  51. #define FLG_MIAMISOCKS        (FLG_LIMITED|0x00000004) /* not used in this version */
  52. #define FLG_PORTNAME        0x00000008
  53.  
  54. /***************************************************************************/
  55. /* structure used for timing */
  56. struct dstruct
  57. {
  58.     int                    disinit;
  59.     struct MsgPort         dport;
  60.     LONG                sigBit;
  61.     struct timerequest     dtr;
  62.     ULONG                 flags;
  63. };
  64.  
  65. #define DSFLG_ALLOCATED    1
  66. #define DSFLG_ACTIVE    2
  67.  
  68. /***************************************************************************/
  69. /* defaults */
  70.  
  71. #define DEF_NCHILD    2
  72. #define DEF_GT        0
  73. #define DEF_CT        0
  74. #define DEF_PPT        128
  75. #define DEF_FROM    1
  76. #define DEF_TO        80
  77.  
  78. /***************************************************************************/
  79. /* errors */
  80. enum
  81. {
  82.     SCAN_ERROR_NOBSDSOCKET = -1000,
  83.     SCAN_ERROR_NOSOCKET,
  84.     SCAN_ERROR_NOMEM,
  85.     SCAN_ERROR_BUFFER,
  86.     SCAN_ERROR_TARGETNOTFOUND,
  87.     SCAN_ERROR_SENDING,
  88.     SCAN_ERROR_BREAK,
  89.     SCAN_ERROR_TIMER,
  90.     SCAN_ERROR_TIMEOUT,
  91.     SCAN_ERROR_SELECT,
  92. };
  93.  
  94. /***************************************************************************/
  95. /* some help macro */
  96.  
  97. #define NODE(a) ((struct Node *)(a))
  98. #define MINNODE(a) ((struct MinNode *)(a))
  99. #define LIST(a) ((struct List *)(a))
  100. #define MINLIST(a) ((struct MinList *)(a))
  101. #define MESSAGE(m) ((struct Message *)(m))
  102.  
  103. #define NEWLIST(l) (LIST(l)->lh_Head = NODE(&LIST(l)->lh_Tail), \
  104.                     LIST(l)->lh_Tail = NULL, \
  105.                     LIST(l)->lh_TailPred = NODE(&LIST(l)->lh_Head))
  106.  
  107. #define INITPORT(p,s) ((p)->mp_Flags = PA_SIGNAL, \
  108.                        (p)->mp_SigBit = (UBYTE)(s), \
  109.                        (p)->mp_SigTask = FindTask(NULL), \
  110.                        NEWLIST(&((p)->mp_MsgList)))
  111.  
  112. #define INITMESSAGE(m,p,l) ((m)->mn_Node.ln_Type = NT_MESSAGE, \
  113.                             (m)->mn_ReplyPort = (p), \
  114.                             (m)->mn_Length = (l))
  115.  
  116. #ifndef SAVEDS
  117. #define SAVEDS    __saveds
  118. #endif
  119. #ifndef ASM
  120. #define ASM        __asm
  121. #endif
  122. #ifndef REG
  123. #define REG(x)    register __ ## x
  124. #endif
  125.  
  126. /***************************************************************************/
  127.  
  128. /* utils.c */
  129. u_long resolve ( STRPTR hostName );
  130.  
  131. /* errors.c */
  132. void error ( int code , char *prg , char *string );
  133. void  printGlobal ( struct global *g , STRPTR host , u_long hostIP );
  134.  
  135. /* start.c */
  136. void SAVEDS ascan ( void );
  137.  
  138. /* proc.c */
  139. struct Process *createProc ( struct childMsg *msg );
  140.  
  141. /* ddelay.c */
  142. LONG setDStruct ( struct dstruct *ds );
  143. void freeDStruct ( struct dstruct *ds );
  144. ULONG doDelay ( struct dstruct *ds , ULONG secs , ULONG micros , ULONG signals );
  145. void startDelay ( struct dstruct *ds , ULONG secs , ULONG micros );
  146. void stopDelay ( struct dstruct *ds );
  147.  
  148. /***************************************************************************/
  149.